const cloud = require('wx-server-sdk');
const TcbRouter = require('tcb-router');

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });

exports.main = async (event, context) => {
  const app = new TcbRouter({ event });

  // 设置CORS跨域，允许你的Vue本地开发环境访问
  app.use(async (ctx, next) => {
    // 请将 http://localhost:5173 替换为你的实际Vue项目地址
    ctx.set('Access-Control-Allow-Origin', 'http://localhost:5173'); 
    ctx.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
    ctx.set('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With'); // 添加常用的头部
    // 预检请求（OPTIONS）直接返回成功
    if (event.httpMethod === 'OPTIONS') {
      ctx.status = 204; // No Content
      return;
    }
    await next();
  });

  // 创建一个路由来处理所有POST请求
  app.router('POST', '/', async (ctx) => {
    // 注意：这里的 event 是原始的 HTTP 请求事件，参数在 body 中
    const { action, data } = event.body ? JSON.parse(event.body) : {};

    if (!action) {
      ctx.body = { success: false, message: '缺少action参数' };
      return;
    }

    try {
      // 在服务器内部调用目标云函数
      const result = await cloud.callFunction({
        name: action, // 'action'就是要调用的云函数名，如 'adminLogin'
        data: data || {} // 将数据传递给目标函数
      });

      // 将目标云函数的返回结果作为HTTP响应体返回
      ctx.body = result.result; 

    } catch (e) {
      ctx.body = { success: false, error: e.message };
    }
  });

  return app.serve();
};